1
Chuyển sang Môi trường Sản xuất: Tư duy Triển khai
EvoClass-AI002Bài giảng 10
00:00

Chuyển sang Môi trường Sản xuất: Tư duy Triển khai

Mô-đun cuối cùng này nối liền khoảng cách giữa nghiên cứu thành công — nơi chúng ta đạt được độ chính xác cao trong một tệp ghi chú — và việc thực thi đáng tin cậy. Triển khai là quá trình then chốt chuyển đổi mô hình PyTorch thành một dịch vụ tối thiểu, dịch vụ độc lậpcó khả năng cung cấp dự đoán hiệu quả cho người dùng cuối với độ trễ thấp và khả năng sẵn sàng cao.

1. Sự thay đổi tư duy dành cho môi trường sản xuất

Môi trường khám phá của tệp ghi chú Jupyter mang tính trạng thái và dễ bị lỗi khi sử dụng trong môi trường sản xuất. Chúng ta cần tái cấu trúc mã nguồn từ các đoạn script khám phá thành các thành phần có cấu trúc, rời rạc, phù hợp để xử lý các yêu cầu đồng thời, tối ưu hóa tài nguyên và tích hợp trơn tru vào các hệ thống lớn hơn.

Dự đoán độ trễ thấp:Đạt được thời gian dự đoán ổn định dưới ngưỡng mục tiêu (ví dụ: $50\text{ms}$), điều này cực kỳ quan trọng đối với các ứng dụng thời gian thực.
Khả năng sẵn sàng cao:Thiết kế dịch vụ phải đáng tin cậy, không trạng thái và có khả năng phục hồi nhanh chóng sau sự cố.
Khả năng tái tạo lại:Đảm bảo rằng mô hình và môi trường triển khai (các phụ thuộc, trọng số, cấu hình) hoàn toàn trùng khớp với kết quả nghiên cứu đã được kiểm chứng.
Trọng tâm: Dịch vụ Mô hình
Thay vì triển khai toàn bộ script huấn luyện, chúng ta triển khai một lớp bao bọc dịch vụ nhỏ gọn và độc lập. Dịch vụ này chỉ cần thực hiện ba nhiệm vụ: tải mô hình đã tối ưu hóa, áp dụng tiền xử lý đầu vào, và chạy phép truyền tiến để trả về kết quả dự đoán.
inference_service.py
THƯƠNG ĐẠIbash — uvicorn-service
> Đã sẵn sàng. Nhấp vào "Mô phỏng Quy trình Triển khai" để chạy.
>
TRÌNH KIỂM TRA TÀI SẢNSống động

Mô phỏng quy trình để xem các tài sản sản xuất đã được tải.
Câu hỏi 1
Tính năng nào của tệp ghi chú Jupyter khiến nó không phù hợp để triển khai trong môi trường sản xuất?
Nó chủ yếu sử dụng mã Python
Nó vốn mang tính trạng thái và tiêu tốn nhiều tài nguyên
Nó không thể truy cập trực tiếp vào GPU
Câu hỏi 2
Mục đích chính khi chuyển đổi mô hình PyTorch sang TorchScript hoặc ONNX trước khi triển khai là gì?
Tối ưu hóa để thực thi nhanh hơn bằng C++ và giảm thiểu phụ thuộc vào Python
Để ngăn chặn việc đánh cắp mô hình hoặc đảo ngược thiết kế mô hình
Để tự động xử lý tiền xử lý dữ liệu đầu vào
Câu hỏi 3
Khi thiết kế API sản xuất, thời điểm nào nên tải trọng số mô hình?
Một lần, khi dịch vụ khởi tạo
Tại thời điểm bắt đầu mỗi yêu cầu dự đoán
Khi nhận được yêu cầu đầu tiên đến dịch vụ
Thử thách: Xác định Dịch vụ Tối thiểu
Lên kế hoạch các yêu cầu cấu trúc cho một dịch vụ độ trễ thấp.
Bạn cần triển khai một mô hình phân loại ảnh phức tạp ($1\text{GB}$) yêu cầu tiền xử lý ảnh chuyên biệt. Nó phải xử lý được $50$ yêu cầu mỗi giây.
Bước 1
Để đảm bảo lưu lượng cao và độ trễ trung bình thấp, thay đổi cấu trúc quan trọng nhất cần thiết đối với đoạn mã Python là gì?
Giải pháp:
Tái cấu trúc cơ sở mã thành các mô-đun riêng biệt (Tiền xử lý, Định nghĩa Mô hình, Người chạy Dự đoán) và đảm bảo toàn bộ quy trình được đóng gói để sử dụng trong container.
Bước 2
Tài sản tối thiểu cần thiết để gửi đi, ngoài trọng số đã huấn luyện, là gì?
Giải pháp:
Mã nguồn/định nghĩa lớp chính xác được dùng để tiền xử lý và định nghĩa kiến trúc mô hình, được tuần tự hóa và ghép nối cùng với trọng số.